ssssaaaa____mmmmaaaasssskkkk specifies a set of signals to be blocked while the signal handler
is active. On entry to the signal handler, that set of signals is added
to the set of signals already being blocked when the signal is delivered.
In addition, the signal that caused the handler to be executed will also
be blocked, unless the _SSSS_AAAA______NNNN_OOOO_DDDD_EEEE_FFFF_EEEE_RRRR flag has been specified. Keep in mind
that _SSSS_AAAA______NNNN_OOOO_DDDD_EEEE_FFFF_EEEE_RRRR is superseded by ssssaaaa____mmmmaaaasssskkkk so that if _SSSS_AAAA______NNNN_OOOO_DDDD_EEEE_FFFF_EEEE_RRRR is set but
the same signal is specified in ssssaaaa____mmmmaaaasssskkkk, the signal will still be
blocked. _SSSS_IIII_GGGG_SSSS_TTTT_OOOO_PPPP and _SSSS_IIII_GGGG_KKKK_IIII_LLLL_LLLL cannot be blocked (the system silently
enforces this restriction). The user constructs this mask via the
routines described in _ssss_iiii_gggg_ssss_eeee_tttt_oooo_pppp_ssss(3).
The _s_a__f_l_a_g_s field specifies a set of flags used to modify the delivery
of the signal. It is formed by a logical OR of any of the following
values:
_SSSS_AAAA______OOOO_NNNN_SSSS_TTTT_AAAA_CCCC_KKKK If set and the signal is caught and an alternate signal
stack has been declared with _ssss_iiii_gggg_aaaa_llll_tttt_ssss_tttt_aaaa_cccc_kkkk(2), the signal
is delivered to the calling process on that stack.
Otherwise, the signal is delivered on the same stack as
the main program.
_SSSS_AAAA______RRRR_EEEE_SSSS_EEEE_TTTT_HHHH_AAAA_NNNN_DDDD If set and the signal is caught, the disposition of the
signal is reset to _SSSS_IIII_GGGG______DDDD_FFFF_LLLL (_SSSS_IIII_GGGG_IIII_LLLL_LLLL, _SSSS_IIII_GGGG_TTTT_RRRR_AAAA_PPPP, and _SSSS_IIII_GGGG_PPPP_WWWW_RRRR
cannot be automatically reset when delivered; the
system silently enforces this restriction).
_SSSS_AAAA______NNNN_OOOO_DDDD_EEEE_FFFF_EEEE_RRRR If set and the signal is caught, the signal will not be
automatically blocked by the kernel while it is being
caught.
_SSSS_AAAA______RRRR_EEEE_SSSS_TTTT_AAAA_RRRR_TTTT If set and the signal is caught, a system call that is
interrupted by the execution of this signal's handler
is transparently restarted by the system. Otherwise,
that system call returns an _EEEE_IIII_NNNN_TTTT_RRRR error.
_SSSS_AAAA______SSSS_IIII_GGGG_IIII_NNNN_FFFF_OOOO If set and the signal is caught, _s_i_g is passed as the
first argument to the signal-catching function. If the
second argument is not equal to _NNNN_UUUU_LLLL_LLLL, it points to a
_ssss_iiii_gggg_iiii_nnnn_ffff_oooo______tttt structure containing the reason why the
signal was generated [see _ssss_iiii_gggg_iiii_nnnn_ffff_oooo(5)]; the third
argument points to a _uuuu_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt______tttt structure containing
the receiving process's context when the signal was
delivered [see _uuuu_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt(5)]. If cleared and the signal
is caught, the first argument is also the signal number
but the second argument is the signal code identifying
the cause of the signal. The third argument points to a
_ssss_iiii_gggg_cccc_oooo_nnnn_tttt_eeee_xxxx_tttt______tttt structure containing the receiving
process's context when the signal was delivered. This
is the default behavior (see _ssss_iiii_gggg_nnnn_aaaa_llll_((((_5555_)))) for more
details). Additionally, when _SSSS_AAAA______SSSS_IIII_GGGG_IIII_NNNN_FFFF_OOOO is set for a
signal, multiple occurrences of that signal will be
queued for delivery in FIFO order (see _ssss_iiii_gggg_qqqq_uuuu_eeee_uuuu_eeee(3) for
A 0 value indicates that the call succeeded. A -1 return value indicates
an error occurred and _e_r_r_n_o is set to indicate the reason.
WWWWAAAARRRRNNNNIIIINNNNGGGGSSSS
Signals raised by any instruction in the instruction stream, including
SSSSIIIIGGGGFFFFPPPPEEEE, SSSSIIIIGGGGIIIILLLLLLLL, SSSSIIIIGGGGEEEEMMMMTTTT, SSSSIIIIGGGGBBBBUUUUSSSS, and SSSSIIIIGGGGSSSSEEEEGGGGVVVV, will cause infinite loops if
their handler returns, or the action is set to SSSSIIIIGGGG____IIIIGGGGNNNN.... This is because
the exception PC at the time of the signal points to the instruction that
raised the exception or signal, and resuming the process will re-execute
that same instruction.
The POSIX signal routines (_s_i_g_a_c_t_i_o_n(2), _s_i_g_p_e_n_d_i_n_g(2), _s_i_g_p_r_o_c_m_a_s_k(2),
_s_i_g_s_u_s_p_e_n_d(2), _s_i_g_s_e_t_j_m_p(3)), and the 4.3BSD signal routines (_s_i_g_v_e_c(3B),
_s_i_g_n_a_l(3B), _s_i_g_b_l_o_c_k(3B), _s_i_g_p_a_u_s_e(3B), _s_i_g_s_e_t_m_a_s_k(3B)) must NEVER be
used with _s_i_g_n_a_l(2) or _s_i_g_s_e_t(2).
In multithreaded processes, _s_i_g_a_c_t_i_o_n cannot be used to predictably
affect another thread waiting for the affected signals via _s_i_g_w_a_i_t.